package callback;

import javax.swing.*;

/**
 * @Author wsyjiamian@163.com
 * @Description 内部类与回调
 * @Date 2020/8/18 9:45
 */

public class InnerClass {

    //内部类两种展现方式
    public static  String PID = "123";
    Integer id;
    public InnerClass(Integer id){
        this.id = id;
    }
    public void getUserName(String name){
        System.out.println(id + " : " + name);
    }


    public static void main(String[] args) {
        InnerClass ic = new InnerClass(1);
        User u = ic.new User();
        u.selectById();
    }

    //此种方式，与外围类关系较紧密，数据互通性更强
    //限制较少
    class User{

        //public static String hek = "123";  //注意在非静态的内部类中，不能声明一个静态类变量

        public void selectById(){
            if(id == 1){
                getUserName("zs");
            }else{
                getUserName("none");
            }
        }
    }

    /*
    public static void main(String[] args) {
        User user = new InnerClass.User();
    }

    static class User{
        // 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)
        public void selectById(){
            if(PID.equals("123")){
                System.out.println("我只能访问外部类的静态成员");
            }
        }
    }*/

}
